package org.xteam.sled.semantic;

import java.util.ArrayList;
import java.util.List;

import org.xteam.sled.semantic.exp.Exp;
import org.xteam.sled.semantic.exp.IExpRewriter;


public abstract class SequenceElement {
	
	public boolean isLabel() {
		return false;
	}

	public boolean isContradictory() {
		return false;
	}

	public int width() {
		return 0;
	}

	public List<Constraint> getConstraints() {
		return new ArrayList<Constraint>();
	}

	public boolean hasInputOrLabels() {
		return true;
	}

	public abstract SequenceElement substitutePC(int k, Exp addBitsToPC);

	public abstract SequenceElement substitute(IExpRewriter subs);

	public SequenceElement injectLatent() {
		return this;
	}

	public SequenceElement actualize(boolean actualsOk) {
		return this;
	}
	
}
